package com.rbac.modules.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.rbac.modules.system.entity.SysRole;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface SysRoleMapper extends BaseMapper<SysRole> {
    @Select("SELECT r.role_code FROM sys_role r " +
            "INNER JOIN sys_user_role ur ON r.id = ur.role_id " +
            "WHERE ur.user_id = #{userId} AND r.status = 1")
    List<String> selectRoleCodesByUserId(@Param("userId") Long userId);

    /**
     * 删除用户的角色关联
     * @param userId 用户ID
     */
    void deleteUserRoleByUserId(@Param("userId") Long userId);

    /**
     * 添加用户角色关联
     * @param userId 用户ID
     * @param roleId 角色ID
     */
    void insertUserRole(@Param("userId") Long userId, @Param("roleId") Long roleId);

    /**
     * 删除角色的权限关联
     * @param roleId 角色ID
     */
    void deleteRolePermissionByRoleId(@Param("roleId") Long roleId);

    /**
     * 添加角色权限关联
     * @param roleId 角色ID
     * @param permissionId 权限ID
     */
    void insertRolePermission(@Param("roleId") Long roleId, @Param("permissionId") Long permissionId);

    /**
     * 检查角色权限关联是否存在
     * @param roleId 角色ID
     * @param permissionId 权限ID
     * @return 是否存在
     */
    boolean existsRolePermission(@Param("roleId") Long roleId, @Param("permissionId") Long permissionId);
} 